package com.neouton.crm.pm.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.neouton.common.entity.BaseEntityVO;
import com.neouton.crm.approval.entity.ApprovalVO;
import com.neouton.crm.customer.entity.CustomerVO;
import com.neouton.crm.entity.SysUserEntity;
import com.neouton.crm.sales.entity.SalesFileRelationVO;
import lombok.Data;
import org.apache.catalina.User;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 合同相关Vo
 * @Author libingkun
 * @Date 2022年11月30日
 * @Version 1.0
 *          初始化迁移
 */
@Data
public class ContractInfoVO extends BaseEntityVO {
    /**
     * 主键ID
     */
    private Integer contractId;

    /**
     * 审批主表ID
     */
    private Integer approvalId;

    /**
     * 合同名称
     */
    private String contractTopic;

    /**
     * 合同类型
     */
    private Integer contractType;

    private String contractTypeStr;

    /**
     * 项目ID
     */
    private Integer projectManageId;

    /**
     * 项目名称
     */
    private String projectManageTheme;

    /**
     * 机会点ID
     */
    private Integer opportunityId;

    /**
     * 机会点主题
     */
    private String opportunityTheme;

    /**
     * 合同金额集合
     */
    private List<String> contractAmountList;


    /**
     * 签订日期集合
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private List<Date> contractSigningDateList;

    /**
     * 合同编号
     */
    private String contractNo;

    /**
     * 合同甲方
     */
    private CustomerVO contractLessor;

    /**
     * 合同联系人
     */
    private String contractContacts;
    /**
     * 联系人电话
     */
    private String contractContactsPhone;
    /**
     * 签订日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date contractSigningDate;

    private String contractSigningDateStr;

    /**
     * 合同所有者
     */
    private SysUserEntity contractOwner;

    /**
     * 所有者ID
     */
    private Integer ownerUserId;
    /**
     * 合同金额
     */
    private String contractAmount;

    /**
     * 预留利润
     */
    private BigDecimal reserveProfit;


    private String contractAmountPage;
    /**
     * 收货地址
     */
    private String contractShippingAddress;
    /**
     * 合同备注
     */
    private String contractRemarks;

    /**
     * 回款期次
     */
    private Integer bmpPeriod;

    private String bmpPeriodStr;

    /**
     * 关联审批记录
     */
    private ApprovalVO approval;

    /**
     * 审批状态
     */
    private String approvalStr;

    private List<SalesFileRelationVO> salesFileRelations;

    /**
     * 客户名称
     */
    private String customerName;

    /**
     * 合同甲方名称
     */
    private String lessorName;

    /**
     * 客户Id
     */
    private Integer customerId;

    /**
     * 回款计划
     */
    private List<BackMoneyPlanVo> backMoneyPlanList;
    /**
     * 开票记录
     */
    private List<BillingRecordVo> billingRecordVoList;
    /**
     * 回款记录
     */
    private List<BackMoneyRecordVo> backMoneyRecordVoList;

    /**
     * 排序字段
     */
    private String orderByProp;

    /**
     * 排序类型
     */
    private String order;

    /**
     * 审批状态
     */
    private String approvalStatus;

    /**
     * 申请原因
     */
    private String askReason;

    /**
     * 审批意见
     */
    private String appReason;

    /**
     * 总开票金额
     */
    private BigDecimal billMoneys;

    private String billMoneyPage;

    /**
     * 总回款金额
     */
    private BigDecimal bmrMoneys;

    private String bmrMoneyPage;

    /**
     * 合同甲方id
     */
    private Integer contractLessorId;
    /**
     * 查询的类型名称，用于区分
     */
    private String typeName;

    /**
     * 转发人集合
     */
    private List<SysUserEntity> forwardUsers;
}
